package com.aaa.vegetablemarketexpress.service;

import com.aaa.vegetablemarketexpress.entity.Order;
import com.aaa.vegetablemarketexpress.entity.OrderAct;

import javax.servlet.http.HttpSession;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @FileName: OrderService
 * @Description:
 * @Author: qxh
 * @CreateTime: 2025/9/15 15:08
 * @Version: 1.0.0
 */
public interface OrderService {

    /**
     * 创建订单
     * @param order 订单信息
     * @param session HTTP会话
     */
    void createOrder(Order order, HttpSession session);

    /**
     * 更新订单状态
     * @param order 订单信息
     */
    void updateOrderStatus(Order order);

    Map getPayStatus (String orderNo);

    Map getNativeByOrder(Order order);

    /**
     * 获取商家订单列表
     * @param request 查询参数
     * @param session 用户会话
     * @return 订单列表
     */
    Map<String, Object> getShopOrders(Map<String, Object> request, HttpSession session);

    /**
     * 发货单个商品
     * @param itemId 商品明细ID
     * @param session 用户会话
     * @return 是否成功
     */
    boolean shipItem(Long itemId, HttpSession session);

    /**
     * 获取用户订单列表
     * @param request 查询参数
     * @param session 用户会话
     * @return 订单列表
     */
    Map<String, Object> getUserOrders(Map<String, Object> request, HttpSession session);

//    /**
//     * 用户确认收货
//     * @param orderId 订单ID
//     * @param session 用户会话
//     * @return 是否成功
//     */
//    boolean confirmReceipt(Long orderId, HttpSession session);
    /**
     * 用户确认收货
     * @param orderId 订单ID
     * @param orderNo 订单编号
     * @param session 用户会话
     * @return 是否成功
     */
    boolean confirmReceipt(Long orderId, String orderNo, HttpSession session);


    /**
     * 获取订单趋势数据
     */
    List<Map<String, Object>> getOrderTrendData(Date startDate, Date endDate);

    /**
     * 获取订单状态统计
     */
    List<Map<String, Object>> getOrderStatusStats();

    /**
     * 获取商品销售排行
     */
    List<Map<String, Object>> getProductSalesRanking(int limit);

    /**
     * 根据订单编号生成支付二维码
     * @param orderNo 订单编号
     * @return 支付二维码信息
     */
    Map getNativeByOrderNo(String orderNo);

}
